/**
 * @author yangyu.liu 
 * @time 2022-12-02 20:00 PM
 * @description  实现路由拦截
 */
// 引入Pinia仓库
import { commonDefinition } from "../store";
// 引入解密方法
import { deCodeApi } from "../utils";

// 路由登录拦截
export default function interceptor(to, _, next) {
    // 判断是否有nologin免登录
    if (to.meta.nologin) {
        next()
        return
    }

    let cache = sessionStorage.getItem('login-flag')
    if (!cache) {
        next('/login')
        return
    }
    try {
        cache = deCodeApi(cache)
        if (!cache) {
            next('/login')
            return
        }

        cache = cache.split('---')
        // 保证token的时效性。两个小时过期
        let passTime = Date.now() - cache[1]
        if (passTime > 2 * 60 * 60 * 1000) {
            next('/login')
            return
        }
        // 保证token的正确性，读取sessionStorage和store中的token数据进行对比 
        let token = commonDefinition().getToken
        if (cache[0] !== token) {
            next('/login')
            return
        }
        next()
    } catch (error) {
        console.log('token有问题');
        next('/login')
    }
}
